const fs = require('fs');
// 引入 express 框架
const express = require('express')
// 路径处理模块
const path = require('path')
// 纯文本转化的对象 （POST提交中间件）
const bodyParser = require('body-parser')
const { fstat } = require('fs')
// 创建web服务器
const app = express()
// 静态资源访问服务器功能
app.use(express.static(path.join(__dirname, 'public')))
/*
*  对于前端POST方式提交的数据，需要通过中间件body-parser来接收，并且根据提交的数据格式，分别做解析   const bodyParser = require('body-parser')
*  如果提交的是非Json格式，则使用 urlencoded 方法解析  bodyParser.urlencoded()
*  如果提交的是Json格式，则使用 json 方法解析    bodyParser.json()
*  最终，可以通过服务器端的请求对象的body 方法访问前端提交的数据      req.body
*/
/* 服务器端需要处理接收的参数数据 */
// POST提交的纯文本转化为对象 
app.use(bodyParser.urlencoded({ extended: false })) //  request.body 包含提交的数据对象
app.use(bodyParser.json()) //服务器接收POST提交的JSON数据
// 服务器端路由
app.get('/first', (req, res) => {
   res.send('hi from server method:get') //发送到客户端
})
app.post('/first', (req, res) => {
   res.send('hi from server methods:post') //发送到客户端
})
//02.处理服务器返回的Json数据
app.get('/responseData', (req, res) => {
   res.send({ 'name': 'chj' }) //发送到客户端
})
// 03.传递get请求参数
app.get('/get', (req, res) => {
   //接收客户端发送的get参数
   // res.send(req.body)
   console.log(req.query);
})
// 04.传递post请求参数
app.post('/post', (req, res) => {
   // 接收客户端数据git
   console.log(req.body);
   // POST提交的数据 需要经过中间件 处理
   res.send(req.body)
})
// 05.向服务器传递JSON格式数据
app.post('/json', (req, res) => {
   console.log(req.body);
   res.send(req.body)
})
// 06.获取服务器响应数据的另一种方式
app.get('/readyState', (req, res) => {
   res.send('响应数据')
})
// 07.error 处理
app.get('/error', (req, res) => {
   // console.log(abc);
   res.status(400).send('error')
})
//08 浏览器AJax请求缓存问题
app.get('/cache', (req, res) => {
   fs.readFile('./test.txt', (error, result) => {
      res.send(result)
   })
})
app.listen(3000)
console.log('服务器启动成功');